---
title: Astro 사이트를 Google Cloud에 배포
description: Google Cloud를 사용하여 Astro 사이트를 웹에 배포하는 방법
sidebar:
  label: Google Cloud
type: deploy
logo: google-cloud
supports: ['ssr', 'static']
i18nReady: true
---
import { Steps } from '@astrojs/starlight/components';

[Google Cloud](https://cloud.google.com/)는 Astro 사이트를 배포하는 데 사용할 수 있는 모든 기능을 갖춘 웹 앱 호스팅 플랫폼입니다.

## 배포 방법

### Cloud Storage (정적 전용)

<Steps>
1. [새 GCP 프로젝트를 생성](https://console.cloud.google.com/projectcreate)하거나 이미 가지고 있는 프로젝트를 선택하세요.

2. [Cloud Storage](https://cloud.google.com/storage)에서 새 버킷을 생성합니다.

3. 이름과 기타 필수 설정을 지정합니다.

4. `dist` 폴더를 여기에 업로드하거나 [Cloud Build](https://cloud.google.com/build)를 사용하여 업로드하세요.

5. `allUsers`에 `Storage Object Viewer`라는 새 권한을 추가하여 공개 액세스를 활성화합니다.

6. 웹사이트 구성을 편집하여 `index.html`을 엔트리포인트로 추가하고 `404.html`을 오류 페이지로 추가합니다.
</Steps>

### Cloud Run (SSR 및 정적)

Cloud Run은 인프라를 관리할 필요 없이 컨테이너를 실행할 수 있는 서버리스 플랫폼입니다. 정적 사이트와 SSR 사이트를 모두 배포하는 데 사용할 수 있습니다.

#### 서비스 준비

<Steps>
1. [새 GCP 프로젝트를 생성](https://console.cloud.google.com/projectcreate)하거나 이미 가지고 있는 프로젝트를 선택하세요.

2. [Cloud Run API](https://console.cloud.google.com/apis/library/run.googleapis.com)가 활성화되어 있는지 확인하세요.

3. 새로운 서비스를 생성합니다.
</Steps>

#### Dockerfile 생성 및 컨테이너 빌드

Astro 사이트를 Cloud Run에 배포하려면 먼저 컨테이너를 빌드하는 데 사용할 Dockerfile을 만들어야 합니다. 레시피 섹션에서 [Astro와 함께 Docker를 사용하는 방법](/ko/recipes/docker/#dockerfile-생성)에 대한 자세한 내용을 찾아보세요.

Dockerfile이 생성되면 이미지로 빌드하고 Google Cloud에 푸시합니다. 이를 수행하는 몇 가지 방법이 있습니다:

**Docker를 사용하여 로컬로 빌드**:

이미지를 빌드하려면 `docker build` 명령을 사용하고, 이미지에 태그를 지정하려면 `docker tag`를 사용하고, 레지스트리에 푸시하려면 `docker push`를 사용하세요. Google Cloud의 경우 [`Artifact Registry`](https://cloud.google.com/artifact-registry/docs/docker/pushing-and-pulling)가 가장 쉬운 옵션이지만 [Docker 허브](https://hub.docker.com/)를 사용할 수도 있습니다.

```bash
# 컨테이너 빌드
docker build .

docker tag SOURCE_IMAGE HOSTNAME/PROJECT-ID/TARGET-IMAGE:TAG

# 이미지를 레지스트리로 푸시
docker push HOSTNAME/PROJECT-ID/IMAGE:TAG
```

프로젝트에 맞게 위 명령에서 다음 값을 변경합니다.

- `SOURCE_IMAGE`: 로컬 이미지 이름 또는 이미지 ID입니다.
- `HOSTNAME`: 레지스트리 호스트 (`gcr.io`, `eu.gcr.io`, `asia.gcr.io`, `us.gcr.io`, `docker.io`).
- `PROJECT`: Google Cloud 프로젝트 ID입니다.
- `TARGET-IMAGE`: 레지스트리에 저장될 때 이미지의 이름입니다.
- `TAG`는 이미지와 관련된 버전입니다.

[Google Cloud 문서에서 자세히 알아보세요.](https://cloud.google.com/artifact-registry/docs/docker/pushing-and-pulling)

**다른 도구 사용**:

[GitHub Actions](https://github.com/marketplace/actions/push-to-gcr-github-action)와 같이 Docker를 지원하는 CI/CD 도구를 사용할 수 있습니다.

**[Cloud Build](https://cloud.google.com/build)를 사용하여 빌드**:

Dockerfile을 로컬로 빌드하는 대신 Google Cloud에 원격으로 이미지를 빌드하도록 지시할 수 있습니다. [여기에서 Google Cloud Build 문서](https://cloud.google.com/build/docs/build-push-docker-image)를 참조하세요.

#### 컨테이너 배포

배포는 [using `gcloud`](https://cloud.google.com/run/docs/deploying#service)하여 터미널에서 수동으로 처리하거나 [Cloud Build](https://cloud.google.com/build) 또는 기타 CI/CD 시스템을 사용하여 자동으로 처리할 수 있습니다.

:::note[공개 액세스가 필요합니까?]
Cloud Run 권한 설정의 `allUsers` 그룹에 `Cloud Run Invoker` 권한을 추가하는 것을 잊지 마세요!
:::
